package com.jxstjh.conch.handler.utils;

import com.jxstjh.conch.common.domain.TaskInfo;
import com.jxstjh.conch.common.enums.ChannelTypeEnum;
import com.jxstjh.conch.common.enums.MessageTypeEnum;

import java.util.ArrayList;
import java.util.List;

/**
 * 消息中心消费组工具类
 *
 * Kafka的groupId由渠道类型和消息类型组成, 中间用"."连接, 如 email.notice
 */
public class GroupIdMappingUtil {

    /**
     * 获取所有的groupIds
     * (不同的渠道不同的消息类型拥有自己的groupId)
     */
    public static List<String> getAllGroupIds() {
        List<String> groupIds = new ArrayList<>();
        for (ChannelTypeEnum channelType : ChannelTypeEnum.values()) {
            for (MessageTypeEnum messageType : MessageTypeEnum.values()) {
                groupIds.add(channelType.getCodeEn() + "." + messageType.getCodeEn());
            }
        }
        return groupIds;
    }


    /**
     * 根据TaskInfo获取当前消息的groupId
     * @param taskInfo
     * @return
     */
    public static String getGroupIdByTaskInfo(TaskInfo taskInfo) {
        String channelCodeEn = ChannelTypeEnum.getEnumByCode(taskInfo.getSendChannel()).getCodeEn();
        String msgCodeEn = MessageTypeEnum.getEnumByCode(taskInfo.getMsgType()).getCodeEn();
        return channelCodeEn + "." + msgCodeEn;
    }

    public static void main(String[] args) {
        System.out.println(getAllGroupIds().toString());
    }
}